package com.cc.controller

import com.cc.common.model.Results
import com.cc.model.User
import com.cc.service.UserService
import org.springframework.web.bind.annotation.*

/**
 * 用户管理
 *
 * @author cc
 * @since 2024/4/21
 * @version 1.0
 */
@RestController
@RequestMapping("/user")
class UserController(private val userService: UserService) {

    /**
     * 添加用户
     * 创造
     * @param [user] 用户
     * @return [Results<String>]
     */
    @PostMapping("/create")
    fun create(@RequestBody user: User): Results<String> {
        userService.create(user)
        return Results.Ok("")
    }

    /**
     * 通过id删除用户
     * @param [id] 要删除的数据的id
     * @return [Results<String>]
     */
    @DeleteMapping("/delete")
    fun delete(@RequestParam("id") id: String): Results<String> {
        userService.delete(id)
        return Results.Ok("")
    }

    /**
     * 批量删除用户
     * @param [ids] 要删除数据的[List]集
     * @return [Results<String>]
     */
    @DeleteMapping("/deleteBatch")
    fun deleteBatch(@RequestBody ids: List<String>): Results<String> {
        userService.deleteBatch(ids)
        return Results.Ok("")
    }

    /**
     * 更新用户
     * @param [user] 用户
     * @return [Results<String>]
     */
    @PutMapping("/update")
    fun update(@RequestBody user: User): Results<String> {
        userService.update(user)
        return Results.Ok("")
    }

    /**
     * 根据条件查询用户列表
     * @return [Results<Page<UserDto>>]
     */
    @GetMapping("/page")
    fun page(page: Int = 1, num: Int = 10) = Results.Ok(userService.findAll(page, num))

    /**
     * 查询用户明细
     *
     * @param id 根据id查询
     * @return [Result]
     */
    @GetMapping("/getUserDetail")
    fun getUserDetail(@RequestParam("id") id: String) = Results.Ok(userService.getUserDetail(id))


    /**
     * 根据用户名查询用户信息
     *
     * @param account 用户名
     * @return [Result]
     */
    @GetMapping("/getUserByAccount")
    fun getUserByUsername(@RequestParam("account") account: String) = Results.Ok(userService.getUserByAccount(account))


}